package jiexiqi;

public class Calculator {//计算器类
    Context mContext = new Context();
    private ArithmeticExpression mExpression;

    public void read(String expression) {//读取表达式
        String[] split = expression.split(" ");//表达式以空格隔开，方便拆分
        switch (split[1]) {//根据不同符号去执行具体的解析操作
            case "=":
                new EqualExpression(new VarExpression(split[0]), new NumExpression(split[2])).interpret(mContext);//保存到context
                break;
            case "+":
                mExpression = new AddExpression(new VarExpression(split[0]), new VarExpression(split[2]));//VarExpression类的数据添加到AddExpression中
                break;
            case "-":
                mExpression = new SubExpression(new VarExpression(split[0]), new VarExpression(split[2]));
                break;
        }
    }
    public int calculate() {//计算结果
        return (int) mExpression.interpret(mContext);//先再子类的interpret方法返回一个string，然后从Context中取值出来，再进行操作。
    }
}
